Bug 592883 - Spin cell rendererer problem with double click
authorKristian Rietveld <kris@gtk.org>
Thu, 27 Aug 2009 14:22:11 +0000 (16:22 +0200)
committerKristian Rietveld <kris@gtk.org>
Thu, 27 Aug 2009 16:12:54 +0000 (18:12 +0200)
Block 2BUTTON and 3BUTTON press events using a button press event
handler in GtkCellRendererSpin, so that they won't be eaten and
processed by tree view.

gtk/gtkcellrendererspin.c

index 92b66926add3a0b68b0513acc13e5bb7a2d56fb5..ebd08e275c39c69aba7606cf3a2541a0710728bd 100644 (file)
@@ -271,6 +271,21 @@ gtk_cell_renderer_spin_key_press_event (GtkWidget   *widget,
   return FALSE;
 }
 
+static gboolean
+gtk_cell_renderer_spin_button_press_event (GtkWidget      *widget,
+                                           GdkEventButton *event,
+                                           gpointer        user_data)
+{
+  /* Block 2BUTTON and 3BUTTON here, so that they won't be eaten
+   * by tree view.
+   */
+  if (event->type == GDK_2BUTTON_PRESS
+      || event->type == GDK_3BUTTON_PRESS)
+    return TRUE;
+
+  return FALSE;
+}
+
 static GtkCellEditable *
 gtk_cell_renderer_spin_start_editing (GtkCellRenderer     *cell,
                                      GdkEvent            *event,
@@ -296,6 +311,10 @@ gtk_cell_renderer_spin_start_editing (GtkCellRenderer     *cell,
   spin = gtk_spin_button_new (priv->adjustment,
                              priv->climb_rate, priv->digits);
 
+  g_signal_connect (spin, "button-press-event",
+                    G_CALLBACK (gtk_cell_renderer_spin_button_press_event),
+                    NULL);
+
   if (cell_text->text)
     gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin),
                               g_ascii_strtod (cell_text->text, NULL));